本章将示範如何为你的备份用户在 Rackspace 的储存容器上设置 Rackspace 的储存限额。
如果你未曾接触过 Rackspace,你应该先参考他们在 http://support.rackspace.com/ 的常规设置文档。
如果你已经使用 Rackspace,你可以按照我们的步骤来为你的备份用户设置存储。我们将指导你完成以下的步骤:
在完成这些步骤後,就可以为容器设置配额了。
在设置下面的存储配额步骤前,我们假设你已经在备份客户端建立了 Rackspace 的存储。而容器的命名语法如下: "mybackup-<username>" 。
收集从 "用户管理"(User Management) > "用户名称" (Username)(点击你需要获得API密钥的用户名称。)> "登录详细信息"(Login Details) > "API密钥" (API Key)
点击"显示"(Show) ,以显示已遮罩的密钥。
连接到一台安装了curl 的 Linux 伺服器。你需要使用 curl 指令来向 Rackspace 的伺服器申请访问令牌。
使用方法: Usage: curl -v -k -s https://identity.api.rackspacecloud.com/v2.0/tokens -X "POST" -d "{\"auth\":{\"RAX-KSKEY:apiKeyCredentials\":{\"username\":\"<user name>\", \"apiKey\":\"<API Key>\"}}}" -H "Content-Type: application/json"
注: API 密钥可以从上一步骤中获取。
---------------------------------------------------------------------------------------------------- [root@os ~]# curl -v -k -s https://identity.api.rackspacecloud.com/v2.0/tokens - X "POST" -d "{\"auth\":{\"RAX-KSKEY:apiKeyCredentials\":{\"username\":\"DavidCha n\", \"apiKey\":\"778b2d84b63334e36a2d841339663446\"}}}" -H "Content-Type: appli cation/json" * About to connect() to identity.api.rackspacecloud.com port 443 (#0) * Trying 72.3.138.129... connected * Connected to identity.api.rackspacecloud.com (72.3.138.129) port 443 (#0) : : : 修剪 : : : {"access":{"token":{"id":"e85127fa63824a9f85ba437d1061b5c0","expires":"2014-11-1 8T07:26:16.071Z","tenant":{"id":"926819","name":"926819"},"RAX-AUTH:authenticate dBy":["APIKEY"]},"serviceCatalog":[{"name":"cloudFilesCDN","endpoints":{"region" :"HKG","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/cdn6.clouddrive.c om\/v1\/MossoCloudFS_926819"},{"region":"SYD","tenantId":"MossoCloudFS_926819"," publicURL":"https:\/\/cdn4.clouddrive.com\/v1\/MossoCloudFS_926819"},{"region":" DFW","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/cdn1.clouddrive.com \/v1\/MossoCloudFS_926819"},{"region":"IAD","tenantId":"MossoCloudFS_926819","pu blicURL":"https:\/\/cdn5.clouddrive.com\/v1\/MossoCloudFS_926819"},{"region":"OR D","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/cdn2.clouddrive.com\/ v1\/MossoCloudFS_926819"}],"type":"rax:object-cdn"},{"name":"cloudFiles","endpoi nts":[{"region":"HKG","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/st orage101.hkg1.clouddrive.com\/v1\/MossoCloudFS_926819","internalURL":"https:\/\/ snet-storage101.hkg1.clouddrive.com\/v1\/MossoCloudFS_926819"}, : : : 修剪 : : : "user":{"id":"0c3001f01cb94856a87f8653ab875117","roles":[{"id":"10000256","descr iption":"Object Store Admin Role for Account User","name":"object-store:admin"}, {"tenant* Connection #0 to host identity.api.rackspacecloud.com left intact * Cl osing connection #0 Id":"926819","id":"6","description":"A Role that allows a us er access to keystone Service methods","name":"compute:default"},{"tenantId":"Mo ssoCloudFS_926819","id":"5","description":"A Role that allows a user access to k eystone Service methods","name":"object-store:default"},{"id":"2","description": "Default Role.","name":"identity:default"}],"name":"DavidChan","RAX-AUTH:default Region":"HKG"}}}[root@os ~]# [root@os ~]# ----------------------------------------------------------------------------------------------------
需要先收集上述强调的值,然後才能提交其他 curl 指令来设置配额。由於返回的字串是长而零星的信息,你可以使用第三方的解析器如: JSON viewer 解读上面的字串。
注:
上面的例子是经过修剪以适合放於这个文章中。
如果你是使用 JSON viewer,你需要复制下面的字串
{"access":{"token ......修剪...... defaultRegion":"HKG"}}}, 并显示於 JSON viewer 内。
要设置配额,你需要从上一步返回的字串中提取以下3条信息。
以及收集来自 Rackspace 云控制面板的容器名称。
3.1 token id
token id 可以在令牌的对象中收集。
例如 e85127fa63824a9f85ba437d1051b5c0
---------------------------------------------------------------------------------------------------- : : : {"access":{"token":{"id":"e85127fa63824a9f85ba437d1061b5c0","expires":"2014-11-1 8T07:26:16.071Z","tenant":{"id":"926819","name":"926819"},"RAX-AUTH:authenticate dBy":["APIKEY"]} : : : ----------------------------------------------------------------------------------------------------
从 JSON Viewer 中:
3.2 RAX-AUTH:defaultRegion
默认地区可以用户对象中收集。
例如 HKG
---------------------------------------------------------------------------------------------------- : : : "user":{"id":"0c3001f01cb94856a87f8653ab875117","roles":[{"id":"10000256","descr iption":"Object Store Admin Role for Account User","name":"object-store:admin"}, {"tenant* Connection #0 to host identity.api.rackspacecloud.com left intact * Cl osing connection #0 Id":"926819","id":"6","description":"A Role that allows a us er access to keystone Service methods","name":"compute:default"},"tenantId":"Mos soCloudFS_926819","id":"5","description":"A Role that allows a user access to ke ystone Service methods","name":"object-store:default"},{"id":"2","description":" Default Role.","name":"identity:default"}],"name":"DavidChan","RAX-AUTH:defaultR egion":"HKG"}} : : : ----------------------------------------------------------------------------------------------------
从 JSON Viewer 中:
3.3 端点的公开网址
你需要从对象 serviceCatalog 中找出端点的公开网址,与子对象的名称 "cloudFiles",寻找端点内使用默认的地区(如HKG),那麽你就可以找到公开网址的路径。
例如 https://storage101.hkg1.clouddrive.com/v1/MossoCloudFS_926819
---------------------------------------------------------------------------------------------------- : : : "serviceCatalog":[{"name":"cloudFilesCDN","endpoints":[{"region":"HKG","tenantId ":"MossoCloudFS_926819","publicURL":"https:\/\/cdn6.clouddrive.com\/v1\/MossoClo udFS_926819"},{"region":"SYD","tenantId":"MossoCloudFS_926819","publicURL":"http s:\/\/cdn4.clouddrive.com\/v1\/MossoCloudFS_926819"},{"region":"DFW","tenantId": "MossoCloudFS_926819","publicURL":"https:\/\/cdn1.clouddrive.com\/v1\/MossoCloud FS_926819"},{"region":"IAD","tenantId":"MossoCloudFS_926819","publicURL":"https: \/\/cdn5.clouddrive.com\/v1\/MossoCloudFS_926819"},{"region":"ORD","tenantId":"M ossoCloudFS_926819","publicURL":"https:\/\/cdn2.clouddrive.com\/v1\/MossoCloudFS _926819"}],"type":"rax:object-cdn"},{"name":"cloudFiles","endpoints":[{"region": "HKG","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/storage101.hkg1.cl ouddrive.com\/v1\/MossoCloudFS_926819","internalURL":"https:\/\/snet-storage101. hkg1.clouddrive.com\/v1\/MossoCloudFS_926819"}, : : : ----------------------------------------------------------------------------------------------------
从 JSON Viewer 中:
3.4 容器名称
当备份集在备份客户端中建立後,容器名称可以在 Rackspace 云控制面板中的 "文件"(Files) 标签中找到。
例如: mybackup-davidchan
在这个例子中,我们将设置容器为2MB配额(2097152位元)。
使用方法: curl -v -k -X PUT -H "X-Container-Meta-Quota-Bytes: <quota>" -H "X-Auth-Token: <token id>" <endpoints public URL>/<container name>
注:
Rackspace 的容器网址是端点的公开网址和为你的用户建立的容器名称,就是
https://storage101.hkg1.clouddrive.com/v1/MossoCloudFS_926819 及 mybackup-davidchan
你需要把斜线 "/" 放在2个值之间。
例如: https://storage101.hkg1.clouddrive.com/v1/MossoCloudFS_926819/mybackup-davidchan
---------------------------------------------------------------------------------------------------- [root@os ~]# curl -v -k -X PUT -H "X-Container-Meta-Quota-Bytes: 2097152" -H "X- Auth-Token: e85127fa63824a9f85ba437d1061b5c0" https://storage101.hkg1.clouddrive .com/v1/MossoCloudFS_926819/mybackup-davidchan * About to connect() to storage101.hkg1.clouddrive.com port 443 (#0) * Trying 119.9.64.232... connected * Connected to storage101.hkg1.clouddrive.com (119.9.64.232) port 443 (#0) * Initializing NSS with certpath: sql:/etc/pki/nssdb * warning: ignoring value of ssl.verifyhost * skipping SSL peer certificate verification * SSL connection using TLS_DHE_RSA_WITH_AES_256_CBC_SHA * Server certificate: * subject: CN=storage101.hkg1.clouddrive.com,OU=Domain Validated,OU=Thawte SSL123 certificate,OU=Go to https://www.thawte.com/repository/index.html * start date: Aug 15 00:00:00 2013 GMT * expire date: Aug 15 23:59:59 2015 GMT * common name: storage101.hkg1.clouddrive.com * issuer: CN=Thawte DV SSL CA,OU=Domain Validated SSL,O="Thawte, Inc.",C=U S > PUT /v1/MossoCloudFS_926819/mybackup-davidchan HTTP/1.1 > User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zl ib/1.2.3 libidn/1.18 libssh2/1.4.2 > Host: storage101.hkg1.clouddrive.com > Accept: */* > X-Container-Meta-Quota-Bytes: 2097152 > X-Auth-Token: e85127fa63824a9f85ba437d1061b5c0 > < HTTP/1.1 202 Accepted < Content-Length: 76 < Content-Type: text/html; charset=UTF-8 < X-Trans-Id: tx682827faeba84b3bba3ee-005469b15ahkg1 < Date: Mon, 17 Nov 2014 08:27:06 GMT < * Connection #0 to host storage101.hkg1.clouddrive.com left intact * Closing connection #0 <html><h1>Accepted</h1><p>The request is accepted for processing.</p></html>[roo t@os ~]# [root@os ~]# ----------------------------------------------------------------------------------------------------
当你看到"接受"(Accepted)讯息返回时,2MB的配额已成功设置。